/*
 * Boton.cpp
 *
 *  Created on: 04/10/2009
 *      Author: ale
 */

#include "Boton.h"
#include <vector>
#include "../src/Punto.h"
#include "../src/Color.h"
#include "../src/Definiciones.h"
#include "../src/Matriz3D.h"

Boton::Boton(int num) :
	numero(num) {
	presionado = false;
	std::vector<Punto> pts;
	pts.push_back(Punto(0, 0));
	pts.push_back(Punto(0, H_BOTON));
	pts.push_back(Punto(W_BOTON, H_BOTON));
	pts.push_back(Punto(W_BOTON, 0));
	pts.push_back(Punto(0, 0));
	forma.setPuntos(pts);
	forma.setColorLinea(Color(GRIS));
	forma.setColorPintura(Color(GRIS_CLARO));
	numero.setColorLinea(Color(AZUL));
	numero.setColorPintura(Color(AZUL));
}
Boton::~Boton() {
}

bool Boton::isPresionado() {
	return presionado;
}
void Boton::presionarSoltar() {
	presionado = (!presionado);
}
void Boton::dibujarContorno(Matriz3D& mat) {
	Matriz3D escala, trasla,res;
	Matriz3D *a;
	trasla.setTraslacion(Punto(0, (H_BOTON /2)- (H_NUMERO / 2)));
	forma.dibujarContorno(mat);
	a = mat*trasla;
	numero.dibujarContorno(*a);
	delete a;

}
void Boton::pintar(Matriz3D& mat) {
	Matriz3D escala, trasla,res;
	Matriz3D *a;
		trasla.setTraslacion(Punto(0, (H_BOTON /2)- (H_NUMERO / 2)));
		a = mat*trasla;
	if (presionado) {
		forma.setColorPintura(Color(GRIS_OSCURO));
		forma.pintar(mat);
		numero.setColorFondo(Color(GRIS_OSCURO));
		numero.setColorPintura(Color(ROJO));
		numero.pintar(*a);
		numero.setColorPintura(Color(AZUL));
		numero.dibujarContorno(*a);
		presionarSoltar();
	} else {
		forma.setColorPintura(Color(GRIS_CLARO));
		forma.pintar(mat);
		numero.setColorFondo(Color(GRIS_CLARO));
		numero.pintar(*a);
		numero.dibujarContorno(*a);
	}
	forma.dibujarContorno(mat);
	delete a;
}
